9. K8S之deployment

9. K8S之deployment

首先要来复习一下RCRS这俩角色:

RC(Replication Controller):

K8s集群中最早的保证Pod高可用的API对象。用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器退出,会自动创建新的pod 来代替;而如果异常多出来的容器,也会自动回收。

RS(ReplicaSet)

是新一代RC,提供同样的高可用能力,区别主要在于RS后来居上,能支持更多种类的匹配模式。(比如,根据pod的tags来批量管理)

也就是说,他俩管理Pod是这么来的:

image-20210226140838646

  • RSRC目前的区别只是支持的selector不同,后续肯定会加入更多功能。

deployment

  • 滚动升级和回滚

  • 应用扩容和缩容

  • 暂停和继续

这三点是RCRS没有的。

1. 部署流程

其实deployment就是通过创建RS来管理Pod的,如图:

image-20210226141726857

  1. 用户通过 kubectl 创建 Deployment
  2. Deployment 创建 ReplicaSet
  3. ReplicaSet 创建 Pod
    RS对象的命名方式是:子对象的名字 = 父对象名字 + 随机字符串或数字

2. 滚动更新和回滚

如图,版本1的Pod,向版本2的Pod更新:

流程如下:

  1. deployment 创建一个新的RSRS2
  2. RS2开始创建Pod2,在旧版的K8S中,默认每次更新出1个Pod,删除1个旧的Pod;在新版的K8S中,默认每次创建出25%的Pod,再删除25%旧的就Pod。

image-20210226141726857

文章作者: 海龟先生
文章链接: http://haiguixiansheng.org.cn/2020/05/20/9. K8S之deployment/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 海龟先生
打赏
  • 微信
  • 支付宝

评论